package com.pv.user.controller;
import java.util.Arrays;

import com.pv.common.utils.R;
import com.pv.user.entity.UserEntity;
import com.pv.user.service.UserService;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;


/**
 * 用户表
 *
 * @author zk
 * @email 2638561747@qq.com
 * @date 2021-08-21 14:35:31
 */
@Slf4j
@RestController
@RequestMapping("user/user")
public class UserController {
    @Autowired
    private UserService userService;

    private static final Logger LOGGER = LoggerFactory.getLogger(UserController.class);


    /**
     * 站点app登陆
     * @param username
     * @param password
     * @return
     */
    @PostMapping("/sys/multiLogin")
    public R multiLogin(String username, String password, Integer siteId) {
//        LOGGER.info("-------开始进入用户名密码登录-----");
//        if(siteId==null){
//            return R.error("siteId不能为空");
//        }
//        Map<String, String> parameters = new HashMap<>();
//        parameters.put(OAuth2Utils.GRANT_TYPE, "password");
//        parameters.put(OAuth2Utils.CLIENT_ID, SystemClientInfo.CLIENT_ID);
//        parameters.put("client_secret", SystemClientInfo.CLIENT_SECRET);
//        parameters.put(OAuth2Utils.SCOPE, SystemClientInfo.CLIENT_SCOPE);
////		parameters.put("username", username);
//        // 为了支持多类型登录，这里在username后拼装上登录类型
//        parameters.put("username", username + "|" + CredentialType.USERNAME.name() + "|" + SystemClientInfo.MULTI_LOGIN + "|"+siteId);
//        parameters.put("password", password);
//
//        //lichao: 2020/6/17 判断未加密的密码是否是规定密码,是的话存储临时变量,这里设置30s过期
//        if(password.equals("ZDThx56%^")){
//            stringRedisTemplate.opsForValue().set("loginSpecial"+username, "1", 30,
//                    TimeUnit.SECONDS);
//        }else{
//            stringRedisTemplate.opsForValue().set("loginSpecial"+username, "0", 30,
//                    TimeUnit.SECONDS);
//        }
//
//        stringRedisTemplate.opsForValue().set("loginSiteId"+username, String.valueOf(siteId), 120,
//                TimeUnit.MINUTES);
//        stringRedisTemplate.opsForValue().set("loginRedis"+username, SystemClientInfo.MULTI_LOGIN, 120,
//                TimeUnit.MINUTES);
//        LOGGER.info("-------进入登录查询-----");
//        try{
//            Map<String, Object> tokenInfo = oauth2Client.postAccessToken(parameters);
//            MultiTenantUser byUserName = multiTenantUserService.getInfByUserName(username, siteId);
////           判断用户状态 2020/3/10-xza  2020-04-20
//            if (byUserName.getWorkingState()!=1){
//                return ResultInfo.error(201,"该用户已离职");
//            }
//            if (byUserName.getAllowedLogin()!=1){
//                return ResultInfo.error(201,"该用户不被允许登陆");
//            }
//            return ResultInfo.success(CodeMsg.SUCCESS,tokenInfo, "成功");
//        }catch (Exception e){
//            String message = e.getMessage();
//            LOGGER.info("异常信息:"+message+"===========");
//            if(StringUtils.isNotEmpty(message)){
//                if(message.indexOf("不存在")>0){
//                    return ResultInfo.error(CodeMsg.ERROR, "用户不存在");
//                }
//                if(message.indexOf("已作废")>0){
//                    return ResultInfo.error(CodeMsg.ERROR, "用户已作废");
//                }
//                if(message.indexOf("Bad credentials")>0){
//                    return ResultInfo.error(CodeMsg.ERROR, "用户密码错误");
//                }
//            }
//            return ResultInfo.error(CodeMsg.ERROR, "登录出现异常");
//        }
        return null;
    }
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    @ApiOperation(value="根据主键查询", notes="参数只用到了主键." ,httpMethod="POST")
    public R info(@PathVariable("id") Integer id){
		UserEntity user = userService.getById(id);
        return R.ok().put("user", user);
    }

    /**
     * 保存
     */
    @RequestMapping("/save")
    @ApiOperation(value="添加", notes="" ,httpMethod="POST")
    public R save(@RequestBody UserEntity user){
		userService.save(user);

        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    @ApiOperation(value="修改", notes="" ,httpMethod="POST")
    public R update(@RequestBody UserEntity user){
		userService.updateById(user);

        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    @ApiOperation(value="删除", notes="" ,httpMethod="POST")
    public R delete(@RequestBody Integer[] ids){
		userService.removeByIds(Arrays.asList(ids));

        return R.ok();
    }

}
